package com.gonsin.ta.logic.annotations;

import org.springframework.core.annotation.AliasFor;
import org.springframework.stereotype.Component;

import java.lang.annotation.*;

/**
 * TA 执行组件
 */
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Component
public @interface NodeComponent {

    /**
     * 与Component value一样
     */
    @AliasFor(annotation = Component.class, attribute = "value")
    String value() default "";

    /**
     * 与Component value一样
     */
    @AliasFor(annotation = Component.class, attribute = "value")
    String id() default "";

    /**
     * 组件名字，必须唯一
     */
    String nodeId();

    /**
     * 组件的说明
     */
    String note() default "";

    /**
     * 是否可执行
     */
    boolean access() default true;

    /**
     * 执行完该节点后，是否强制结束流程
     */
    boolean end() default false;

    /**
     * 运行失败时重试次数
     */
    int retryCount() default 3;

}
